#include "head.h"

int load_config(char *key, char *value) {
    // 打开配置文件
    FILE *fp = fopen("../config.ini", "r");
    if (fp == NULL) {
        perror("fopen");
        return -1;
    }

    while (true) {
        char line[1024];
        memset(line, 0, sizeof(line));
        // 读取一行数据, 如果读取失败, 则说明已经读取到文件末尾, 退出循环
        if (fgets(line, sizeof(line), fp) == NULL) {
            char *buf = "there's nothing to read\n";
            memcpy(value, buf, strlen(buf));
            return -1;
        }
        // 去除行尾的换行符
        line[strcspn(line, "\n")] = '\0';
        // 解析配置文件, 处理数据
        char *line_key = strtok(line, " = ");
        if (strcmp(line_key, key) == 0) {
            // 找到对应key的配置项, 提取value
            char *line_value = strtok(NULL, " = ");
            memcpy(value, line_value, strlen(line_value));
            return 0;
        }
    }
    return 0;
}

// 测试用例如下:
// int main(void) {
//     char ip[100];
//     memset(ip, 0, sizeof(ip));
//     load_config("ip", ip);
//     printf("ip = %s\n", ip);

//     char port[100];
//     memset(port, 0, sizeof(port));
//     load_config("port", port);
//     printf("port = %s\n", port);

//     return 0;
// }